<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript">
            var bb=123;
			console.log("bb="+bb);
			cc=123;
			// 不写var 相当于 window.c
			console.log("cc="+cc);
			
			console.log("mm = "+mm);//mm = undefined 
			var mm = 123;
			
			// 等价于 在script 下var mm ,然后正常执行 console.log("mm = "+mm);mm = 123;
			
			// console.log("dd = "+dd);//Uncaught ReferenceError: dd is not defined
			 // dd = 123;
            /*
             * 变量的声明提前[script下面]
             *     - 使用var关键字声明的变量，会在所有的代码执行之前被声明（但是不会赋值），
             *         但是如果声明变量时不使用var关键字，则变量不会被声明提前
             * 
             * 函数的声明提前
             *- 使用函数声明形式创建的函数 function 函数(){}
             * 它会在所有的代码执行之前就被创建，所以我们可以在函数声明前来调用函数
             * 使用函数表达式创建的函数，不会被声明提前，所以不能在声明前调用:
			 * 
             */
            
           
            
            //---------------------------------------------------------------------------
            
            fun(); //我是一个fun函数
            //fun2();//报错 Uncaught TypeError: undefined is not a function
            console.log(fun2) // undefined
            //函数声明，会被提前创建
            function fun(){
                console.log("我是一个fun函数");
            }
            
            //函数表达式，不会被提前创建,但是变量fun2会提前声明 ,但是没有赋值 所以是undefined,所以能不能提前调用
            var fun2 = function(){
                console.log("我是fun2函数");
            };
            
            fun2();//我是fun2函数
            
            
            
        </script>
    </head>
    <body>
    </body>
</html>